<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <ul>
      <li><a data-url="#/a">a</a></li>
      <li><a data-url="#/b">b</a></li>
      <li><a data-url="#/c">c</a></li>
    </ul>
    <div id="contentBox"></div>
    <script>
      // history.back 后退一步
      // history.go() 0 刷新 正数前进
      // history.forward 前进一步
      //  history.pushState 增加历史 但是不会刷页面 可以进行前进后退功能
      //  history.replaceState 不会增加历史
      //  histroy srollRestoration 前后 滚动条处理
      let routerData = [
        { path: '#/a', pathData: '内容a' },
        { path: '#/b', pathData: '内容b' },
        { path: '#/c', pathData: '内容c' },
      ];
      let btn = document.getElementsByTagName('a');
      let content = document.getElementById('contentBox');
      let path;
      for (let i = 0; i < btn.length; i++) {
        btn[i].addEventListener('click', function () {
          console.log(this.getAttribute('data-url'));
          path = this.getAttribute('data-url');
          history.pushState({ a: '你好' }, null, path);
          //   history.replaceState({ a: '你好' }, null, path); //没有相应的回退而已
          refreshFn(path);
        });
      }
      function refreshFn(path) {
        routerData.map((item) => {
          if (item.path === path) {
            content.innerHTML = item.pathData;
          }
        });
      }
      window.addEventListener('popstate', function (e) {
        // e.state 可以获取到第一个参数  第二个参数 说是用title 但没啥用 第三个地址
        console.log(e, e.state, 1);
      });
      window.addEventListener('hashchange', function () {
        console.log(2);
      });
    </script>
  </body>
</html>
